package projectg06.grafosmm;

public class Arista {
	private Nodo nodoOrigen;
	private Nodo nodoDestino;
	private int costo;

	public Arista(Nodo origen, Nodo destino,int costo){
		this(origen.id,destino.id,costo);
	}
	public Arista(int idNodoOrigen, int idNodoDestino, int costo) {
		nodoOrigen=new Nodo(idNodoOrigen);
		nodoDestino=new Nodo(idNodoDestino);
		this.costo=costo;
	}

	public Arista(int idNodoOrigen, int idNodoDestino) {
		this(idNodoOrigen, idNodoDestino, 1);
	}
	public Nodo getNodoOrigen() {
		return nodoOrigen;
	}

	public void setNodoOrigen(Nodo nodoOrigen) {
		this.nodoOrigen = nodoOrigen;
	}

	public Nodo getNodoDestino() {
		return nodoDestino;
	}

	public void setNodoDestino(Nodo nodoDestino) {
		this.nodoDestino = nodoDestino;
	}

	public int getCosto() {
		return costo;
	}

	public void setCosto(int costo) {
		this.costo = costo;
	}
	@Override
	public String toString() {
		return ""+nodoOrigen.id+"->"+nodoDestino.id+"("+costo+")";
	}
	@Override
	public int hashCode() {
		final int prime = 31;
		int result = 1;
		result = prime * result
				+ ((nodoDestino == null) ? 0 : nodoDestino.hashCode());
		result = prime * result
				+ ((nodoOrigen == null) ? 0 : nodoOrigen.hashCode());
		return result;
	}
	@Override
	public boolean equals(Object obj) {
		if (this == obj)
			return true;
		if (obj == null)
			return false;
		if (getClass() != obj.getClass())
			return false;
		Arista other = (Arista) obj;
		if (nodoDestino == null) {
			if (other.nodoDestino != null)
				return false;
		} else if (!nodoDestino.equals(other.nodoDestino))
			return false;
		if (nodoOrigen == null) {
			if (other.nodoOrigen != null)
				return false;
		} else if (!nodoOrigen.equals(other.nodoOrigen))
			return false;
		return true;
	}
	
}
